package com.ruoyi.cbfa.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.cbfa.domain.InsurancePlan;
import org.apache.ibatis.annotations.Param;

/**
 * 参保方案Mapper接口
 * 
 * @author ruoyi
 * @date 2025-05-29
 */
public interface InsurancePlanMapper 
{
    /**
     * 查询参保方案
     * 
     * @param id 参保方案主键
     * @return 参保方案
     */
    public InsurancePlan selectInsurancePlanById(Long id);

    /**
     * 查询参保方案列表
     * 
     * @param insurancePlan 参保方案
     * @return 参保方案集合
     */
    public List<InsurancePlan> selectInsurancePlanList(InsurancePlan insurancePlan);

    /**
     * 新增参保方案
     * 
     * @param insurancePlan 参保方案
     * @return 结果
     */
    public int insertInsurancePlan(InsurancePlan insurancePlan);

    /**
     * 修改参保方案
     * 
     * @param insurancePlan 参保方案
     * @return 结果
     */
    public int updateInsurancePlan(InsurancePlan insurancePlan);

    /**
     * 删除参保方案
     * 
     * @param id 参保方案主键
     * @return 结果
     */
    public int deleteInsurancePlanById(Long id);

    /**
     * 批量删除参保方案
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteInsurancePlanByIds(Long[] ids);


    /**
     * 根据类别ID查询对应的insurance_type列表
     * @param categoryId 类别ID
     * @param type 类别类型(1:社保 2:公积金)
     */
    public List<String> selectInsuranceTypesByCategoryId(@Param("categoryId") Long categoryId, @Param("type") int type);

    InsurancePlan selectCategoryIdsByName(String name);
    public List<String> selectDistinctPlanNames();
    /**
     * 查询社保详情
     */
    List<Map<String, Object>> selectShebaoDetails(Long categoryId);

    /**
     * 查询公积金详情
     */
    List<Map<String, Object>> selectGjjDetails(Long categoryId);
    public List<Map<String, Object>> selectDistinctPlanNamesWithIds();


}
